#pragma once

#include <iostream>
#include <vector>
#include <string>

class Util
{
public:
    // 以sep分割，从s中提取子串，存入out中（主要是为了获取url路径）
    // 例如： aaaaa\r\nbbbbbbb\r\nccc\r\n
    static void cutString(const std::string &s, const std::string &sep, std::vector<std::string> *out)
    {
        std::size_t start = 0;
        while (start < s.size())
        {
            // 寻找分隔符
            std::size_t pos = s.find(sep, start); // size_t find (const char* s, size_t pos = 0) const;
            if (pos == std::string::npos)// 没找到
                break;
            // 若找到，提取子串
            std::string sub = s.substr(start, pos - start); // string substr (size_t pos = 0, size_t len = npos) const;
            // std::cout << "----" << sub << std::endl;//测试代码：用于检验提取子串是否成功
            out->push_back(sub); // 找到后，将其逐一存入vector中
            // 跳过已经截取的子串长度及分隔符长度，继续寻找(此处不能使用Pos，因为其是下标位置，不是间距)
            start += (sub.size() + sep.size());
        }
        if (start < s.size()) // 说明还剩下字符
        {
            out->push_back(s.substr(start)); // 剩余的字符自成一行
        }
    }
};